﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace devoirBD2
{
    public partial class FrmCommandeLigne : Form
    {
        Fournisseur fournisseur;
        Commande commande;
        CommandeLigne cmdl;
        FrmCommande frmCmd;

        public FrmCommandeLigne(FrmCommande frmCmd,Fournisseur f, Commande c)
        {
            this.frmCmd = frmCmd;
            fournisseur = f;
            commande = c;
            InitializeComponent();
        }

        public FrmCommandeLigne(FrmCommande frmCmd, Fournisseur f, Commande c, CommandeLigne cmdl)
        {
            this.frmCmd = frmCmd;
            fournisseur = f;
            commande = c;
            this.cmdl = cmdl;
            InitializeComponent();
        }

        private void FrmCommandeLigne_Load(object sender, EventArgs e)
        {
            if (cmdl == null)
            {
                long[] excludes = new long[commande.getCommandeLignes().Count];
                int indice = 0;
                foreach (CommandeLigne cl in commande.getCommandeLignes())
                {
                    excludes[indice++] = cl.getIdProduit();
                }

                fournisseur.loadProduits(excludes);

                foreach (ProduitFournisseur pf in fournisseur.getProduits())
                {
                    cboPiece.Items.Add(pf.getNomProduit());
                }
            }
            else
            {
                cboPiece.Items.Add(cmdl.getNomProduit());
                
                cboPiece.Enabled = false;

                cboPiece.Text = cmdl.getNomProduit();
            }
            
        }

        private void btnAjouter_Click(object sender, EventArgs e)
        {
            if (valider())
            {
                if (cmdl == null)
                {
                    cmdl = new CommandeLigne(commande.getIdCommande(), fournisseur.getProduits()[cboPiece.SelectedIndex].getIdProduit(), Convert.ToInt64(txtQte.Text.Trim()), fournisseur.getProduits()[cboPiece.SelectedIndex].getPrix(), cboPiece.Text.Trim());
                    cmdl.insert();
                    commande.ajouterLigne(cmdl);
                }
                else
                {
                    cmdl.update(Convert.ToInt64(txtQte.Text.Trim()));
                }

                frmCmd.remplirListe();
                this.Close();
            }
        }

        private bool valider()
        {
            bool valide = true;
            error.Clear();

            if (cboPiece.SelectedIndex == -1 && cmdl == null)
            {
                valide = false;
                error.SetError(cboPiece, "Veuillez choisir un produit.");
            }

            long qte = 0;

            try
            {
                qte = Convert.ToInt64(txtQte.Text.Trim());
            }
            catch
            {
                valide = false;
                error.SetError(txtQte, "Veuillez entrer une quantité au format numérique.");
            }

            if (qte <= 0)
            {
                valide = false;
                error.SetError(txtQte, "La quantité doit être supérieure ou égale à 0.");
            }

            return valide;
        }

        private void btnAnnuler_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
